package dominioDAO;

import hbt.HibernateDAO;
import hbt.HibernateUtil;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import dominioEntity.RemitoProveedor;


// Cliente lado Servidor DAO (Persistencia)

public class RemitoProveedorDAO{
	private static RemitoProveedorDAO instancia ;
	private static SessionFactory sf;
	private static Session session;
	
	public static RemitoProveedorDAO getInstancia() {
		if(instancia == null){
			instancia = new RemitoProveedorDAO();
		} 
		return instancia;
	}
	public RemitoProveedorDAO()
	{
		sf = HibernateUtil.getSessionFactory();
	}
	
	protected Session getSession(){
		if(session == null || !session.isOpen()){
			session = sf.openSession();
		}
		return session;
	}
	
	protected void closeSession()
	{
		if(session.isOpen())
		{
			session.close();
		}
	}
	@SuppressWarnings("unchecked")
	public List<RemitoProveedor> buscarRemitoPorEstado(String estado)
	{
		String query = "from RemitoProveedor r where r.estado=:estado";
		List<RemitoProveedor> aux = (List<RemitoProveedor>)HibernateDAO.getInstancia().parametros(query, "estado", estado);
		return aux;
	}
	
	
	public void aceptarRemitoProveedor(Integer id, String estado)
	{
		String query = "from RemitoProveedor r where r.id="+id;
		RemitoProveedor aux = (RemitoProveedor)HibernateDAO.getInstancia().totalizador(query);
		aux.setEstado(estado);
		this.grabarRemitoProveedor(aux);
	}
	

	public void grabarRemitoProveedor(RemitoProveedor remitoProv) {
		
		Session s = sf.openSession();
		s.beginTransaction();
		s.merge(remitoProv);
		s.flush();
		s.getTransaction().commit();
		s.close();

	}
	
	


}
